package com.lyc.service;

import com.lyc.pojo.Comment;

import java.util.List;
import java.util.Map;
import java.util.Set;

public interface CommentService {
    
    /**
     * 根据帖子ID获取评论列表
     * @param postId 帖子ID
     * @return 评论列表
     */
    List<Comment> getCommentsByPostId(Integer postId);
    
    /**
     * 根据帖子ID获取分层评论列表（区分顶级评论和子评论）
     * @param postId 帖子ID
     * @return 分层的评论列表
     */
    List<Comment> getHierarchicalCommentsByPostId(Integer postId);
    
    /**
     * 添加新评论
     * @param comment 评论对象
     * @return 是否添加成功
     */
    boolean addComment(Comment comment);
    
    /**
     * 删除评论
     * @param commentId 评论ID
     * @param userId 用户ID（用于权限验证）
     * @return 是否删除成功
     */
    boolean deleteComment(Integer commentId, Integer userId);
    
    /**
     * 点赞评论
     * @param commentId 评论ID
     * @param userId 用户ID
     * @return 是否点赞成功
     */
    boolean likeComment(Integer commentId, Integer userId);
    
    /**
     * 检查用户对指定评论的点赞状态
     * @param commentIds 评论ID列表
     * @param userId 用户ID
     * @return 用户点赞的评论ID集合
     */
    Set<Integer> checkCommentsLikeStatus(List<Integer> commentIds, Integer userId);
    
    /**
     * 获取所有评论（供管理端使用）
     * @return 所有评论列表
     */
    List<Comment> getAllComments();
    
    /**
     * 管理端删除评论
     * @param commentId 评论ID
     * @return 是否删除成功
     */
    boolean deleteCommentByAdmin(Integer commentId);
    
    /**
     * 管理端批量删除评论
     * @param commentIds 评论ID列表
     * @return 是否删除成功
     */
    boolean batchDeleteCommentsByAdmin(List<Integer> commentIds);
}